package com.yunxin.core.infra.persistence.converter;

import com.yunxin.core.domain.model.contact.ContactMessageSendSms;
import com.yunxin.core.domain.model.contact.ContactMessageSendTaskDetail;
import com.yunxin.core.domain.model.contact.ContactMessageSendTaskExecute;
import com.yunxin.core.infra.persistence.entity.contact.ContactMessageSendSmsDO;
import com.yunxin.core.infra.persistence.entity.contact.ContactMessageSendTaskDetailDO;
import com.yunxin.core.infra.persistence.entity.contact.ContactMessageSendTaskExecuteDO;
import org.mapstruct.Mapper;

/**
 * @author zero°
 * @since 2023-07-12
 */
@Mapper(componentModel = "spring")
public interface ContactConverter {

    /**
     * do 转 entity
     * @param channelPromotionTransformStatisticsDO channelPromotionTransformStatisticsDO
     * @return ContactMessageSendSms
     */
    ContactMessageSendSms toContactMessageSendSms(ContactMessageSendSmsDO channelPromotionTransformStatisticsDO);

    /**
     * do 转 entity
     * @param contactMessageSendTaskExecuteDO contactMessageSendTaskExecuteDO
     * @return ContactMessageSendTaskExecute
     */
    ContactMessageSendTaskExecute toContactMessageSendTaskExecute(ContactMessageSendTaskExecuteDO contactMessageSendTaskExecuteDO);

    /**
     * do 转 entity
     * @param contactMessageSendTaskDetailDO contactMessageSendTaskExecuteDO
     * @return ContactMessageSendTaskDetail
     */
    ContactMessageSendTaskDetail toContactMessageSendTaskDetail(ContactMessageSendTaskDetailDO contactMessageSendTaskDetailDO);

    /**
     * entity 转 do
     *
     * @param entity entity
     * @return ContactMessageSendSmsDO
     */
    ContactMessageSendSmsDO formContactMessageSendSms(ContactMessageSendSms entity);

    /**
     * entity 转 do
     *
     * @param entity entity
     * @return ContactMessageSendTaskExecuteDO
     */
    ContactMessageSendTaskExecuteDO formContactMessageSendTaskExecute(ContactMessageSendTaskExecute entity);
}
